<?php

namespace app\usedb\controller;

use app\BaseController;
use think\facade\Db;
use think\facade\View;

class Dbsearch extends BaseController
{
    public function index()
    {
        // 接收前端get请求的搜索条件
        $get = $this->request->param();
        dump($get);
        // 判断用户是否搜索了该条件 两个依据
        // 1.数组中是否存在该字段
        // 2.数组中该字段是否值为空

        // 前端条件查询实现原理：在原来的左连接查询中加入if判断语句执行搜索条件查询

        // 整体的链式操作（无法在中间插入if语句）
//        $list = Db::name('xsb')
//            ->alias('x')    // 设置第一张表的别名x
//            ->field('x.*,s.szx as sname')
//            ->leftjoin('zx_szx s', 'x.szx=s.id');
//            ->select();

        // 拆开的链式操作（可以插入if语句）
        $obj = Db::name('xsb')
            ->alias('x')    // 设置第一张表的别名x
            ->field('x.*,s.szx as sname')
            ->leftjoin('zx_szx s', 'x.szx=s.id');
        // 姓名搜索条件
        if (isset($get['xm']) and $get['xm'] !== '') {
            $obj->where('xm', 'like', "%{$get['xm']}%");  // 在链式操作中插入where语句
        }
        // 性别搜索条件
        if (isset($get['sex']) and $get['sex'] !== '') {
            $obj->where('sex', '=', $get['sex']);
        }
        // 年龄搜索条件1
        if (isset($get['age1']) and $get['age1'] !== '') {
            $obj->where('age', '>=', $get['age1']);
        }
        // 年龄搜索条件2
        if (isset($get['age2']) and $get['age2'] !== '') {
            $obj->where('age', '<=', $get['age2']);
        }
        // 所在系搜索条件
        if (isset($get['szx']) and $get['szx'] !== '') {
            $obj->whereIn('x.szx', $get['szx']);
        }
        dump($obj);     // obj是一个 think\db\Query 查询语句对象
        $list = $obj->select();
        dump($list);    // 用list接收，执行查询返回到一个think\Collection 查询结果对象

        $list2 = Db::name('szx')
            ->select();

        View::assign('list', $list);
        View::assign('list2', $list2);
        return View::fetch();

    }

}
